/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.om.impl;

import fr.generali.accueilclient.client.om.IEmail;

/**
 * L'implémentation de {@link IEmail}
 * 
 * @author selrhazala
 */
public class Email implements IEmail, Cloneable {

    /**
     * numéro d'ordre de l'email
     */
    private String numOrdre;

    /**
     * L'adresse email
     */
    private String adresse;

    /**
     * La precision de l'adresse email
     */
    private String precision;

    /**
     * L'indicateur d'email principal
     */
    private boolean principal;

    /**
     * L'indicateur d'email professionnel
     */
    private boolean professionnel;

    /**
     * Indicateur Npai de l'email
     */
    private boolean motifNpai;

    /**
     * {@inheritDoc}
     */
    public String getAdresse() {
        return adresse;
    }

    /**
     * {@inheritDoc}
     */
    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    /**
     * @return the precision
     */
    public String getPrecision() {
        return precision;
    }

    /**
     * @param precision the precision to set
     */
    public void setPrecision(String precision) {
        this.precision = precision;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isPrincipal() {
        return principal;
    }

    /**
     * {@inheritDoc}
     */
    public void setPrincipal(boolean principal) {
        this.principal = principal;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isProfessionnel() {
        return professionnel;
    }

    /**
     * {@inheritDoc}
     */
    public void setProfessionnel(boolean professionnel) {
        this.professionnel = professionnel;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumOrdre() {
        return numOrdre;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumOrdre(String numOrdre) {
        this.numOrdre = numOrdre;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isMotifNpai() {
        return motifNpai;
    }

    /**
     * {@inheritDoc}
     */
    public void setMotifNpai(boolean motifNpai) {
        this.motifNpai = motifNpai;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Email) {
            IEmail email = (IEmail ) obj;
            if (this.numOrdre == email.getNumOrdre()
                            || (this.numOrdre != null && this.numOrdre.equals(email.getNumOrdre()))) {
                return true;
            }
        }
        return false;

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 31 * hash + (null == this.numOrdre ? 0 : this.numOrdre.hashCode());
        return hash;
    }

    /**
     * @see java.lang.Object#clone() . {@inheritDoc}
     * @return email
     * 
     * @throws CloneNotSupportedException CloneNotSupportedException
     */
    @Override
    public IEmail clone() throws CloneNotSupportedException {
        final IEmail email = IEmail.class.cast(super.clone());

        return email;
    }

    /**
     * {@inheritDoc}
     */
    public IEmail createCloneEmail() throws CloneNotSupportedException {

        return clone();
    }
}
